#ifndef _FLASH_DIVIDE_H_
#define _FLASH_DIVIDE_H_

/*
【芯片内部flash划分】
NFW框架默认使用AT32F403ACG 1024K FLASH空间，可根据实际使用型号修改容量配置
每个功能空间划分中间有一个闪存页大小的保留空间，用于空间临时扩展/写操作溢出保护
0x8000000 + BOOTLOADER + RESERVE + PARAMETER + RESERVE + APPLICATION + RESERVE + APPLICATION
|     功能     |      名字      |  起始地址  |     大小     |
| :----------: | :------------: | :--------: | :----------: |
|   引导程序   |   BootLoader   | 0x80000000 | 0xC800(50k)  |
| 参数储存空间 | PARAMETER_SIZE | 0x0800D000 |  0x800(2k)   |
|  主应用程序  |    APP_MAIN    | 0x08010000 | 0x10000(64k) |
| 备份应用程序 |   APP_BACKUP   | 0x08020000 |              |
*/

#define SRAM_SIZE                           (32 * 1024)                             // (规格书)SRAM容量大小
#define Flash_SIZE                          (128 * 1024)                            // (规格书)内置Flash容量大小
#define PAGE_SIZE                           (2 * 1024)                              // (参考手册)页大小，默认2K（AT32F403A）
#define RESERVE_SIZE                        PAGE_SIZE                               // 设置单个保留空间大小，与FLASH页大小相等

//BootLoader
#define BOOTLOADER_SIZE                     (50 * 1024) //设置BOOTLOADER固件大小
#define BOOTLOADER_ADDR_START               0x08000000
#define BOOTLOADER_ADDR_END                 (BOOTLOADER_ADDR_START + BOOTLOADER_SIZE)

// Program Size: Code=44468 RO-data=2208 RW-data=292 ZI-data=31764  (含HAL库)
// (44468+2208)/1024=45.58
// Program Size: Code=40672 RO-data=1660 RW-data=280 ZI-data=31656  (不含HAL库)
// (40672+1660)/1024=41.34
//主应用程序固件
#define APPLICATION_SIZE                    (64 * 1024) //设置应用程序固件大小
#define APPLICATION_MAIN_ADDR_START         0x08010000
#define APPLICATION_MAIN_ADDR_END           (APPLICATION_MAIN_ADDR_START + APPLICATION_SIZE)

//运行参数储存区
#define PARAMETER_SIZE                      PAGE_SIZE  //设置参数保存区空间大小
#define PARAMETER_ADDR_START                0x0800D000
#define PARAMETER_ADDR_END                  (PARAMETER_ADDR_START + PARAMETER_SIZE)

//备份应用程序
#define APPLICATION_BACKUP_SIZE             APPLICATION_SIZE //与主应用大小相同
#define APPLICATION_BACKUP_ADDR_START       0x08010000
#define APPLICATION_BACKUP_ADDR_END         0x08010000

#endif
